﻿Imports DNP.GestionComercial.BE
Imports DNP.DevNetPeru.Data
Imports System.Data.SqlClient
Public Class VentasDAL
    Public Function Guardar(ByVal pObjeto As VentaBE, ByVal usuario As String) As RespuestaBE

        Dim lstUbigeo As New List(Of UbigeoBE)
        Dim oRespuesta As New RespuestaBE
        Dim mensaje As String
        Dim omensaje2 As String

        Try

            Using cmd As New SqlCommand("COM_INS_COM_VENTA")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("p_NVEN_CODIGO", SqlDbType.Int).Value = pObjeto.NVEN_CODIGO
                cmd.Parameters.Add("p_NEMP_CODIGO", SqlDbType.Int).Value = IIf(pObjeto.NEMP_CODIGO = 0, Nothing, pObjeto.NEMP_CODIGO)
                cmd.Parameters.Add("p_NCLI_CODIGO", SqlDbType.Int).Value = IIf(pObjeto.NCLI_CODIGO = 0, Nothing, pObjeto.NCLI_CODIGO)
                cmd.Parameters.Add("p_NEMP_CODIGO_CONFIRMA", SqlDbType.Int).Value = IIf(pObjeto.NEMP_CODIGO_CONFIRMA = 0, Nothing, pObjeto.NEMP_CODIGO_CONFIRMA)
                cmd.Parameters.Add("p_DVEN_FECHA", SqlDbType.DateTime).Value = pObjeto.DVEN_FECHA
                cmd.Parameters.Add("p_NVEN_TIP_COMP", SqlDbType.Int).Value = pObjeto.NVEN_TIP_COMP
                cmd.Parameters.Add("p_NVEN_SUBTOTAL", SqlDbType.Decimal).Value = pObjeto.NVEN_SUBTOTAL
                cmd.Parameters.Add("p_NVEN_IGV", SqlDbType.Decimal).Value = pObjeto.NVEN_IGV
                cmd.Parameters.Add("p_NVEN_TOTAL", SqlDbType.Decimal).Value = pObjeto.NVEN_TOTAL
                cmd.Parameters.Add("p_NVEN_FORMA_PAGO", SqlDbType.Int).Value = pObjeto.NVEN_FORMA_PAGO
                cmd.Parameters.Add("p_NVAL_NUMERO_PAGO", SqlDbType.Int).Value = IIf(pObjeto.NVAL_NUMERO_PAGO = 0, Nothing, pObjeto.NVAL_NUMERO_PAGO)
                cmd.Parameters.Add("p_NAGE_CODIGO", SqlDbType.Int).Value = IIf(pObjeto.NAGE_CODIGO = 0, Nothing, pObjeto.NAGE_CODIGO)
                cmd.Parameters.Add("p_NTVE_CODIGO", SqlDbType.Int).Value = IIf(pObjeto.NTVE_CODIGO = 0, Nothing, pObjeto.NTVE_CODIGO)
                cmd.Parameters.Add("p_NVEN_ESTADO", SqlDbType.Char).Value = pObjeto.NVEN_ESTADO
                cmd.Parameters.Add("p_CAUDI_USR_INS", SqlDbType.VarChar).Value = usuario
                cmd.Parameters.Add("p_MENSAJE", SqlDbType.VarChar, 2000).Direction = ParameterDirection.Output
                BaseDatos.Execute(cmd)

                mensaje = Convert.ToString(cmd.Parameters("p_MENSAJE").Value)
                If mensaje.StartsWith("-1@") Then
                    oRespuesta.Respuesta = False
                    oRespuesta.Mensaje = mensaje.Split("@")(1)

                Else
                    oRespuesta.Respuesta = True
                    oRespuesta.Mensaje = mensaje

                    For Each vDetalle As VentaDetalleBE In pObjeto.DETALLE
                        Dim cmd2 As New SqlCommand("COM_INS_COM_VENTA_DET")
                        cmd2.CommandType = CommandType.StoredProcedure
                        cmd2.Parameters.Add("p_NVEN_CODIGO_DETA", SqlDbType.Int).Value = vDetalle.NVEN_CODIGO_DETA
                        cmd2.Parameters.Add("p_NVEN_CODIGO", SqlDbType.Int).Value = mensaje
                        cmd2.Parameters.Add("p_NVEN_ITEM", SqlDbType.Int).Value = vDetalle.NVEN_ITEM
                        cmd2.Parameters.Add("p_NPRD_CODIGO", SqlDbType.Int).Value = vDetalle.NPRD_CODIGO
                        cmd2.Parameters.Add("p_NUDI_CODIGO", SqlDbType.Int).Value = vDetalle.NUDI_CODIGO
                        cmd2.Parameters.Add("p_NVEN_CANTIDAD", SqlDbType.Decimal).Value = vDetalle.NVEN_CANTIDAD
                        cmd2.Parameters.Add("p_NVEN_PRECIO_UNI", SqlDbType.Decimal).Value = vDetalle.NVEN_PRECIO_UNI
                        cmd2.Parameters.Add("p_NVEN_SUBTOTAL", SqlDbType.Decimal).Value = vDetalle.NVEN_SUBTOTAL
                        cmd2.Parameters.Add("p_NVEN_DESCUENTO", SqlDbType.Decimal).Value = vDetalle.NVEN_DESCUENTO
                        cmd2.Parameters.Add("p_NVEN_TOTAL", SqlDbType.Decimal).Value = vDetalle.NVEN_TOTAL
                        cmd2.Parameters.Add("p_NVEN_ESTADO", SqlDbType.Char).Value = vDetalle.NVEN_ESTADO
                        cmd2.Parameters.Add("p_CAUDI_USR_INS", SqlDbType.VarChar).Value = usuario
                        cmd2.Parameters.Add("p_MENSAJE", SqlDbType.VarChar, 2000).Direction = ParameterDirection.Output
                        BaseDatos.Execute(cmd2)

                        omensaje2 = Convert.ToString(cmd2.Parameters("p_MENSAJE").Value)
                        If omensaje2.StartsWith("-1@") Then
                            oRespuesta.Respuesta = False
                            oRespuesta.Mensaje = omensaje2.Split("@")(1)
                        End If
                    Next
                End If
            End Using

        Catch ex As Exception
            oRespuesta.ValorRertono = lstUbigeo
            oRespuesta.Respuesta = False
            oRespuesta.Mensaje = ex.ToString

        End Try

        Return oRespuesta

    End Function

    Public Function Eliminar(ByVal pObjeto As PARAMETROBE, ByVal usuario As String) As RespuestaBE

        Dim lstUbigeo As New List(Of UbigeoBE)
        Dim oRespuesta As New RespuestaBE
        Dim mensaje As String

        Try

            Using cmd As New SqlCommand("COM_DEL_COM_PROVEEDOR")

                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("p_NPRO_CODIGO", SqlDbType.Int).Value = pObjeto.PARAMETRO01
                cmd.Parameters.Add("p_USUARIO", SqlDbType.VarChar).Value = usuario

                cmd.Parameters.Add("p_MENSAJE", SqlDbType.VarChar, 2000).Direction = ParameterDirection.Output
                BaseDatos.Execute(cmd)

                mensaje = Convert.ToString(cmd.Parameters("p_MENSAJE").Value)
                If mensaje.StartsWith("-1@") Then
                    oRespuesta.Respuesta = False
                    oRespuesta.Mensaje = mensaje.Split("@")(1)
                Else
                    oRespuesta.Respuesta = True
                    oRespuesta.Mensaje = mensaje
                End If

            End Using

        Catch ex As Exception
            oRespuesta.ValorRertono = lstUbigeo
            oRespuesta.Respuesta = False
            oRespuesta.Mensaje = ex.ToString

        End Try
        Return oRespuesta

    End Function

    Public Function ListarTodos(ByVal pParametro As PARAMETROBE) As RespuestaBE

        Dim lstObjeto As New List(Of ProveedorBE)
        Dim oRespuesta As New RespuestaBE

        Try
            Using cmd As New SqlCommand("COM_SEL_COM_PROVEEDOR")
                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("p_BUSCAR", SqlDbType.VarChar).Value = pParametro.PARAMETRO01

                Using dr As SqlDataReader = BaseDatos.GetDataReader(cmd)
                    If dr.HasRows Then
                        ' Return ObtenerUbigeo(dr)
                        lstObjeto = Utils.CreaLista(Of ProveedorBE)(lstObjeto, dr)
                        oRespuesta.ValorRertono = lstObjeto
                        oRespuesta.Respuesta = True

                        Return oRespuesta

                    Else
                        oRespuesta.ValorRertono = lstObjeto
                        oRespuesta.Respuesta = True

                        Return oRespuesta
                    End If
                End Using
            End Using

        Catch ex As Exception
            oRespuesta.ValorRertono = lstObjeto
            oRespuesta.Respuesta = False
            oRespuesta.Mensaje = ex.ToString '"msgErrorCargarInfoBD" 

        End Try
        Return oRespuesta

    End Function

    Public Function Obtener(ByVal codigo As String) As RespuestaBE

        Dim obj As New ProveedorBE
        Dim oRespuesta As New RespuestaBE

        Try

            Using cmd As New SqlCommand("COM_SEL_COM_PROVEEDORXCODIGO")

                cmd.CommandType = CommandType.StoredProcedure
                cmd.Parameters.Add("p_BUSCAR", SqlDbType.VarChar).Value = codigo

                Using dr As SqlDataReader = BaseDatos.GetDataReader(cmd)
                    If dr.Read Then
                        ' Return ObtenerUbigeo(dr)
                        obj = Utils.CreaObjeto(Of ProveedorBE)(obj, dr)
                        oRespuesta.ValorRertono = obj
                        oRespuesta.Respuesta = True

                        Return oRespuesta
                    Else
                        oRespuesta.ValorRertono = obj
                        oRespuesta.Respuesta = True

                        Return oRespuesta
                    End If
                End Using

            End Using

        Catch ex As Exception
            oRespuesta.ValorRertono = obj
            oRespuesta.Respuesta = False
            oRespuesta.Mensaje = ex.ToString '"msgErrorCargarInfoBD" 

        End Try
        Return oRespuesta

    End Function

    Private Function LLenarEntidad(ByVal pdtrSource As System.Data.DataRow) As ProveedorBE

        Dim abeResultado As New ProveedorBE

        Try
            With abeResultado
                If pdtrSource.Table.Columns.Contains("NPRO_CODIGO") Then If IsDBNull(pdtrSource("NPRO_CODIGO")) Then .NPRO_CODIGO = 0 Else .NPRO_CODIGO = pdtrSource("NPRO_CODIGO")
                If pdtrSource.Table.Columns.Contains("CPRO_RUC") Then If IsDBNull(pdtrSource("CPRO_RUC")) Then .CPRO_RUC = String.Empty Else .CPRO_RUC = pdtrSource("CPRO_RUC")
                If pdtrSource.Table.Columns.Contains("CPRO_RAZONSOCIAL") Then If IsDBNull(pdtrSource("CPRO_RAZONSOCIAL")) Then .CPRO_RAZONSOCIAL = String.Empty Else .CPRO_RAZONSOCIAL = pdtrSource("CPRO_RAZONSOCIAL")
                If pdtrSource.Table.Columns.Contains("CPRO_DIRECCION") Then If IsDBNull(pdtrSource("CPRO_DIRECCION")) Then .CPRO_DIRECCION = String.Empty Else .CPRO_DIRECCION = pdtrSource("CPRO_DIRECCION")
                If pdtrSource.Table.Columns.Contains("CPRO_UBIGEO") Then If IsDBNull(pdtrSource("CPRO_UBIGEO")) Then .CPRO_UBIGEO = String.Empty Else .CPRO_UBIGEO = pdtrSource("CPRO_UBIGEO")
                If pdtrSource.Table.Columns.Contains("CPRO_TLFNO") Then If IsDBNull(pdtrSource("CPRO_TLFNO")) Then .CPRO_TLFNO = String.Empty Else .CPRO_TLFNO = pdtrSource("CPRO_TLFNO")
                If pdtrSource.Table.Columns.Contains("CPRO_TLFNO_CEL") Then If IsDBNull(pdtrSource("CPRO_TLFNO_CEL")) Then .CPRO_TLFNO_CEL = String.Empty Else .CPRO_TLFNO_CEL = pdtrSource("CPRO_TLFNO_CEL")
                If pdtrSource.Table.Columns.Contains("CPRO_EMAIL_01") Then If IsDBNull(pdtrSource("CPRO_EMAIL_01")) Then .CPRO_EMAIL_01 = String.Empty Else .CPRO_EMAIL_01 = pdtrSource("CPRO_EMAIL_01")
                If pdtrSource.Table.Columns.Contains("CPRO_EMAIL_02") Then If IsDBNull(pdtrSource("CPRO_EMAIL_02")) Then .CPRO_EMAIL_02 = String.Empty Else .CPRO_EMAIL_02 = pdtrSource("CPRO_EMAIL_02")
                If pdtrSource.Table.Columns.Contains("CPRO_ESTADO") Then If IsDBNull(pdtrSource("CPRO_ESTADO")) Then .CPRO_ESTADO = String.Empty Else .CPRO_ESTADO = pdtrSource("CPRO_ESTADO")
                'If pdtrSource.Table.Columns.Contains("DAUDI_FEC_INS") Then If IsDBNull(pdtrSource("DAUDI_FEC_INS")) Then .DAUDI_FEC_INS = Date.MinValue Else .DAUDI_FEC_INS = pdtrSource("DAUDI_FEC_INS")
                'If pdtrSource.Table.Columns.Contains("CAUDI_USR_INS") Then If IsDBNull(pdtrSource("CAUDI_USR_INS")) Then .CAUDI_USR_INS = String.Empty Else .CAUDI_USR_INS = pdtrSource("CAUDI_USR_INS")
                'If pdtrSource.Table.Columns.Contains("DAUDI_FEC_UPD") Then If IsDBNull(pdtrSource("DAUDI_FEC_UPD")) Then .DAUDI_FEC_UPD = Date.MinValue Else .DAUDI_FEC_UPD = pdtrSource("DAUDI_FEC_UPD")
                'If pdtrSource.Table.Columns.Contains("CAUDI_USR_UPD") Then If IsDBNull(pdtrSource("CAUDI_USR_UPD")) Then .CAUDI_USR_UPD = String.Empty Else .CAUDI_USR_UPD = pdtrSource("CAUDI_USR_UPD")
                'If pdtrSource.Table.Columns.Contains("CAUDI_EST_REG") Then If IsDBNull(pdtrSource("CAUDI_EST_REG")) Then .CAUDI_EST_REG = String.Empty Else .CAUDI_EST_REG = pdtrSource("CAUDI_EST_REG")


            End With

        Catch ex As Exception

        End Try
    End Function
End Class
